GtkCssParser *parser;
GtkCssSection *section;
GtkCssScanner *parent;
- GFile *file;
- GFile *base;
GSList *state;
};
if (scanner->section)
gtk_css_section_unref (scanner->section);
g_object_unref (scanner->provider);
- if (scanner->file)
- g_object_unref (scanner->file);
- g_object_unref (scanner->base);
_gtk_css_parser_free (scanner->parser);
g_slice_free (GtkCssScanner, scanner);
if (section)
scanner->section = gtk_css_section_ref (section);
- if (file)
- {
- scanner->file = g_object_ref (file);
- scanner->base = g_file_get_parent (file);
- }
- else
- {
- char *dir = g_get_current_dir ();
- scanner->base = g_file_new_for_path (dir);
- g_free (dir);
- }
-
scanner->parser = _gtk_css_parser_new (text,
gtk_css_scanner_parser_error,
scanner);
return scanner;
}
-static GFile *
-gtk_css_scanner_get_base_url (GtkCssScanner *scanner)
-{
- return scanner->base;
-}
-
static gboolean
gtk_css_scanner_would_recurse (GtkCssScanner *scanner,
GFile *file)
{
while (scanner)
{
- if (scanner->file && g_file_equal (scanner->file, file))
+ GFile *parser_file = _gtk_css_parser_get_file (scanner->parser);
+ if (parser_file && g_file_equal (parser_file, file))
return TRUE;
scanner = scanner->parent;
char *uri;
uri = _gtk_css_parser_read_string (scanner->parser);
- file = g_file_resolve_relative_path (gtk_css_scanner_get_base_url (scanner), uri);
+ file = _gtk_css_parser_get_file_for_path (scanner->parser, uri);
g_free (uri);
}
else